perm filename APP1[AIM,DBL]1 blob sn#124711 filedate 1974-10-17 generic text, type T, neo UTF8
00100	.DEVICE XGP
00200	.FONT 1 "FIX25"
00300	.FONT 2 "SIGN57"
00400	.FONT 3 "SHD40"
00500	.FONT 4 "BDI25"
00600	.FONT 5 "NGB30"
00700	.FONT 6 "NGR20"
00800	.TURN ON "↓_π{"
00900	.TURN ON "⊗" FOR "%"
01000	.PAGE FRAME 53 HIGH 76 WIDE
01100	.MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
01200	.MACRO E ⊂ APART END ⊃
01300	.TABBREAK
01400	.EVERY HEADING(⊗3BEINGS⊗*,,⊗4Doug Lenat⊗*)
     

00100	.EVERY FOOTING(⊗6Fourth Draft .... {DATE},page A1.{IF PAGE = 1 THEN 1 ELSE PAGE},BEING PARTS)
00200	.PORTION APPENDIX
00300	.COUNT PAGE PRINTING 1
00400	.NEXT PAGE
00500	⊗2APPENDIX 1. ⊗*   ⊗3BEING PARTS⊗*
00600	
00700	⊗4IDEN  ⊗*  How  is  this  BEING  referenced  in  English  sentences?
00800	Implemented  as  productions,  whose  left sides may make arbitrarily
00900	complex examinations of the world, and whose right  sides  may  order
01000	arbitrarily complex side effects before returning a value.
01100	
01200	⊗4ARGS ⊗* How many?   Which are required and which are optional? What
01300	variables must remain local to this BEING?   Which  global  variables
01400	are accessed by some part of this BEING?
01500	
01600	⊗4ARG-CHECK   ⊗*   Predicates   which   examine   each  argument  for
01700	suitability. This could include whether defined,  whether  numerical,
01800	or  something  more  complex  (e.g.,  is it the name of a BEING whose
01900	DATA-STRUCTURE part requires it be initialized to a non-null value?)
02000	
02100	⊗4EVAL-ARGS ⊗* Is the program an  NLAMBDA?  Is  the  code  it  writes
02200	NLAMBDA?  If  so,  which  arguments (if any) should be evaluated upon
02300	entry?
02400	
02500	⊗4WHAT ⊗* A brief summary of the global purpose of the BEING.    This
02600	is  usually  a  template  for  an  English  sentence, more useful for
02700	communication with the user than with other BEINGs.  The variables in
02800	this sentence could be instantiated by examining the world, by asking
02900	other BEINGs, by the BEING who called this one, etc.
03000	
03100	⊗4WHY ⊗* A justification  for  this  BEING's  existence;  why  it  is
03200	called.  The role of the caller to fill in pieces of WHY is much more
03300	important than with the WHAT part.
03400	
03500	⊗4HOW  ⊗*  A  summary  of  the  method(s) used by the BEING to do its
03600	thing. This is a summary of the global  strageties  this  BEING  will
03700	try,  as  contrasted to the more specific parts listed below.  Again,
03800	this is more for the user's benefit than for other BEINGs'.
03900	
04000	⊗4EFFECTS  ⊗*  What  will  be  true   after   calling   this   BEING?
04100	Post-conditions.    These are broken into main and minor effects, and
04200	weighted as to certainty  that  they  will  occur.     This  part  is
04300	implemented  as productions:  all the EFFECTS parts of all the BEINGS
04400	are merged into a large production system. This is then searched  when
04500	some BEING wants something to be true.
04600	
04700	⊗4WHEN  ⊗* Factors and weights giving the BEING's temporal immediacy.
04800	This is computed as a sum of weighted factors.
04900	Although PUP6  should  probably
05000	compare  descriptions  of "desire to be in control," rather than just
05100	numbers, this works sufficiently well for the  present.  Perhaps  the
05200	weakness of perceptrons is important only if they are a major part of
05300	the program. In our case, each BEING has a set of triples here,  each
05400	of which is a BEING call. They must EVALuate to, respectively, T/NIL,
05500	a weight (to be added in  if  T),  and  a  sentence  justifying  this
05600	particular factor.
05700	
05800	⊗4META-CODE  ⊗*  The  "body"  of  the  code,  but with uninstantiated
05900	subparts. This may contain goal statements, nondeterministic calls to
06000	other  BEINGS,  uninstantiated  pieces  which  fill  themselves in by
06100	asking other parts of this BEING, its caller, or the user.
06200	
06300	⊗4COMMENTS ⊗* This is a BEING part, and should be distinguished from
06400	the English-like sentences which are scatterred throughout each part
06500	to aide comprehension. This part  is simply a list of instructions
06600	for filling in undefined "slots" in other parts. Each member of 
06700	COMMENTS is evalled, just prior to attempting the META:CODE part.
06800	
06900	⊗4REQUISITES ⊗* Suppose this BEING ⊗4is⊗* chosen to  be  in  control.
07000	What  must  be  satisfied  just  before  (pre-)  the  BEING executes?
07100	just after (post-)and during (co-) execution? This  is  really  three
07200	separate  BEING  parts.  The satisfying is ⊗4active⊗*, in that if the
07300	conditions aren't true, other BEINGs will be called to  try  to  make
07400	them  true.  (If  ⊗4passive⊗*,  the  BEING  would  simply  fail.  The
07500	ARG-CHECK part is passive in this sense.)
07600	
07700	⊗4DEMONS  ⊗*  Which  demons  should  be  enabled  during  the BEING's
07800	execution? They remain active as long as this BEING activation exists
07900	in the control tree.
08000	
08100	⊗4AFFECTS  ⊗*  Which other BEINGs might be called by this BEING? Why?
08200	That is, which parts of this BEING want what to be done?
08300	
08400	⊗4COMPLEXITY ⊗* A vector describing such features  as  recursiveness,
08500	transparency  to  user, etc. Often the CHOOSE-FROM BEING will compare
08600	several BEINGs by a linear  function  on  this  vector.   The  actual
08700	components  settled  on  were:  how easy it is to call, its chance of
08800	calling* itself, its chance of succeeding, the effort in  trying  it,
08900	the efficiency of the code it will generate,
09000	and  whether  it  must be inhibited absolutely at present.  All these
09100	range over [0,1].
09200	
09300	⊗4SPECIALIZATIONS ⊗* How to write a  more  streamlined,  special-case
09400	version  of  this  BEING.     What decisions must be made, and how do
09500	they simplify the parts of the new BEING?
09600	
09700	⊗4ALTERNATIVES ⊗* If this BEING fails,  what  are  some  equivalent
09800	BEINGs?
09900	
10000	⊗4GENERALIZATIONS  ⊗* What are some general BEINGs, encompassing
10100	this one?
10200	
10300	⊗4PREDICATE ⊗* How many values does this BEING return?    What is the
10400	type of each one (numeric, logical, etc.)?  Are there side effects as
10500	well?
10600	
10700	⊗4DATA-STRUC ⊗* If it is  one,  what  must  be  done  to  initialize,
10800	access,  insert,  and  delete  elements?   What is the structure of a
10900	typical element?
11000	
11100	⊗4ENCODABLE ⊗* How to control writing a specialized new BEING: which
11200	other BEING parts must be called, and in what order.
11300	
11400	⊗4INHIBIT-CURRENT-DEMONS ⊗* A lock/unlock mechanism. When handling a
11500	demonic interrupt, we cannot permit the demon to interrupt us again.
11600	
11700	⊗4FORM-CHANGING ⊗* Where can this BEING return control to directly?
11800	Does the entire form of some new BEING's part(s) have to be altered?
11900	If so, how?
12000	
12100	Below is listed,  for  each  BEING part, the number of BEINGS in PUP6
12200	which had this part specified for them.  Since there were exactly one
12300	hundred  BEINGS,  these  are also percentages.   On the average, each
12400	part was used in 29.3% of all BEINGs. This is slightly unfair to PUP6,
12500	since the ⊗4absence⊗* of some BEING parts (e.g., NLAMBDA) conveys a
12600	nontrivial bit of information.
12700	
12800	.VERBATIM
12900	
13000	54  IDEN
13100	35  IMPLICIT:ARGS
13200	63  EXPLICIT:ARGS
13300	81  EXPLICIT:ARGS:CHECK
13400	 4  NLAMBDA
13500	 3  NON:EVAL:ARGS
13600	82  WHAT
13700	77  HOW
13800	72  WHY
13900	27  MAIN:EFFECTS
14000	 2  MINOR:EFFECTS
14100	19  WHEN
14200	70  META:CODE
14300	16  COMMENTS
14400	 6  PRE:REQUISITES
14500	 0  CO:REQUISITES
14600	 9  POST:REQUISITES
14700	 7  DEMONS
14800	14  AFFECTS
14900	92  COMPLEXITY:VECTOR
15000	27  GENERALIZATIONS
15100	40  SPECIALIZATIONS
15200	16  ALTERNATIVES
15300	15  PREDICATE
15400	 4  DATA:STRUCTURE
15500	 9  ENCODABLE
15600	 5  INHIBIT:CURRENT:DEMONS
15700	 1  FORM:CHANGING